package com.ehome.poct.core.api.virtual;

import com.ehome.poct.base.api.dto.device.TestDeviceDTO;
import com.ehome.poct.base.api.dto.doctor.ClinicDTO;
import com.ehome.poct.core.api.dto.check.AlgoLocalDataDTO;
import com.ehome.poct.core.api.dto.check.CheckParamDTO;
import com.ehome.poct.core.api.vo.check.CellBoardValidVO;
import com.ehome.poct.core.api.vo.check.CheckDataVO;
import com.ehome.poct.core.api.vo.check.CheckProcessResultVO;
import com.ehome.poct.core.api.vo.check.CheckStatusVO;

import java.util.List;

/**
 * 血常规检测服务
 *
 * @author cq
 * @since 2022/03/02 17:30
 **/
public interface CheckService {

    /**
     * 开始处理检测
     * @param param
     * @return
     */
    CheckProcessResultVO handleCheck(CheckParamDTO param, ClinicDTO clinic, TestDeviceDTO device);


    /**
     * 查询检测状态（轮询）
     * @param id
     * @return
     */
    CheckStatusVO pollGetStatus(Long id);

    /**
     * 查询检测状态（手动）
     * @param id
     * @return
     */
    CheckStatusVO manualGetStatus(Long id);
    /**
     * 编辑检测数据
     *
     * @param reqId
     * @param result
     * @param chart
     * @return
     */
    boolean updateResult(Long reqId, List<String> msg, String result, String morphology,  String chart, String images, Boolean hasZero);

    /**
     * 校验板子是否存在
     * @param sno
     * @return
     */
     Boolean  boardIsExist(String sno);

    /**
     * 校验版本 返回板子其他信息
     * @param sno
     * @return
     */
     CellBoardValidVO boardThickness(String sno) ;

    /**
     * 获取检测数据
     * @param id
     * @return
     */
    CheckDataVO getCheckData(Long id);

    /**
     * 算法本地化 存储数据结果
     * @param algoDto
     * @return
     */
    CheckProcessResultVO saveLocalAlgodata(AlgoLocalDataDTO algoDto);

}
